<?php
class Volunteer_Model extends CI_Model {
	/**
	 * 构造函数
	 *
	 * @access public
	 */
	function __construct() {
		parent::__construct();
	}

	/**
	 * 获得指定ID的义工信息
	 * 
	 * @access public
	 * @param int 指定ID
	 * @param array 指定需要获得的字段，未指定则默认为所有字段
	 * @return array 从volunteer_info中获得的义工信息，如果为空返回空数组
	 */
	function get_vol_detail($id, $detail = NULL) {
		if($detail == NULL) $detail = '*';
		else $detail = implode($detail, ',');
		$query = $this->db->query('SELECT '. $detail.' FROM wb_volunteer_info where vol_id = ' . $id);
		if($query->num_rows() > 0) {
			$res = $query->row_array();
			if(isset($res['pswd'])) unset($res['pswd']);
			return $res;
		}
		else return array();
	}
	/**
	 * 获得义工权限
	 *
	 * @access public
	 * @param int 指定ID
	 * @return array 被格式化的义工权限
	 */
	
	function get_vol_priv($id) {

	}
	/**
	 * 获得指定检索条件的义工信息列表
	 *
	 * @access public
	 * @param array 预格式化的检索信息数组，通常从$this->input->post中提取
	 * @return array 从volunteer_info中获得的义工信息，如果为空返回null
	 */
	 //重点
	function get_vol_list($condition) {

	}

	/**
	 * 新建义工信息
	 * 
	 * @access public
	 * @param array 预格式化的义工信息，通常从$this->input->post中提取
	 * @return int 返回状态码，成功返回0，数据库错误返回-1
	 */
	 //次重点
	function create_new_vol($post) {
		$query = $this->db->insert('wb_volunteer_info', $post);
		if($query == TRUE) return 0;
		else return -1;
	}
	
	/**
	 * 修改指定ID的义工信息
	 *
	 * @access public
	 * @param int 指定ID
	 * @param array 预格式化的个人信息，通常从$this->input->post中提取
	 * @return int 返回状态码，成功返回0，错误返回-1
	 */
	 //重点
	function update_vol($id, $post) {
		$query = $this->db->update('wb_volunteer_info', $post, array('vol_id' => $id));
		if($query == TRUE) return 0;
		else return -1;	
	}

	/**
	 * 删除指定ID的所有信息
	 *
	 * @access public
	 * @param int 指定ID
	 * @return int 返回状态码，成功返回0，错误返回-1
	 */
	function delete_vol($id) {
		$res = 0;
		$sql = 'DELETE FROM wb_volunteer_info WHERE vol_id = ' . $id;
		$query = $this->db->query($sql);
		if($query == FALSE) {$res = -1;}
		$sql = 'DELETE FROM wb_volunteer_stat WHERE vol_id = ' . $id;
		$query = $this->db->query($sql);
		if($query == FALSE) {$res = -1;}
		$sql = 'DELETE FROM wb_volunteer_priv WHERE vol_id = ' . $id;
		$query = $this->db->query($sql);
		if($query == FALSE) {$res = -1;}
		return $res;
	}

	/**
	 * 更新登录信息
	 *
	 * @access public
	 * @param string 用户名
	 * @param string 密码（未加密）
	 * @return int 返回状态码，成功更新登录状态返回vol_id，更新失败返回-1，用户名或密码不正确返回0
	 */
	function login($uid, $pswd) {
		//Notice:$pswd 未进行加密，在此应使用加密函数处理成$encrypted_pswd，为了测试API暂不加密
		$encrypted_pswd = $pswd;
		$sql = 'SELECT vol_id FROM wb_volunteer_info WHERE uid = ? AND pswd = ?';
		$query = $this->db->query($sql, array($uid, $encrypted_pswd));
		if($query->num_rows() == 1) {
			$res = $query->row_array();
			$sql = 'UPDATE wb_volunteer_stat SET login_freq = login_freq + 1 , last_log_ip = ? WHERE vol_id = ?';
			$query = $this->db->query($sql, array($this->input->ip_address(), $res['vol_id']));
			if($query == TRUE){
				return $res['vol_id'];
			}
			else return -1;
		}
		else return 0;
	}

	/**
	 * 更改密码
	 *
	 * @access public
	 * @param int 指定ID
	 * @param string 新密码（未加密）
	 * @result int 返回状态码，成功返回0，更新失败返回-1
	 */
	function change_pswd($id, $pswd) {
		//Notice:同login
		$encrypted_pswd = $pswd;
		$sql = 'UPDATE wb_volunteer_info SET pswd = ? WHERE vol_id = ?';
		$query = $this->db->query($sql, array($id, $encrypted_pswd));
		if($query == TRUE) {
			return 0;
		}
		else return -1;
	}
	/**
	 * 更改权限
	 *
	 * @access public
	 * @param int 指定ID
	 * @param array 权限列表数组
	 * @result int 返回状态码，成功返回0，更新失败返回-1
	 */
	function change_priv($id, $priv) {

	}
}
/* End of file volunteer_model.php */
